﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
using System.Configuration;
using System.Data;
namespace ConsoleDBTool
{
    class Program
    {
        static void Main(string[] args)
        {
            string connstr = ConfigurationManager.ConnectionStrings["ORACLEConnectionString"].ConnectionString;

            try
            {
                using (OracleConnection oc = new OracleConnection(connstr))
                {
                    oc.Open();

                    if (oc.State == ConnectionState.Open)
                    {
                        Console.WriteLine("数据库连接打开");
                        OracleDataAdapter od = new OracleDataAdapter("select * from user_tab_cols where table_name='dir_test'", connstr);
                        DataSet ds = new DataSet();
                        od.Fill(ds);
                    }
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }


        }
    }
}
#region 查询oracle计划
/*
 * 根据oracle库中查出所有的表，主要返回表名，表id等关键字
 * 根据表名查询列名，类型，类型大小，索引，是否可空，是否主键，关联关系。。。
 * 查到的表在本地转换成list比较，重写equals进行与mssql中的库表关系比对，以源库oracle为基准，查询mssql中的表
 * 如果oracle中有的表但是mssql中没有，就生成标记，新增，并将oracle新增的库表结构转换成mssql语句
 * 如果oracle中的表mssql中存在，那就用oracle中每列的value去和mssql中的比较，生成mssql语句
 * 如何准确并且高性能的比较？重写类的equals和hashcode方法
 * 如果比较过程中，有差异，那就把差异记录到另外一个list，根据差异list生成mssql语句，如何更好的记录差异？
 * 如何根据差异生成新的sql，大量的判断？把每种情况都列举出来然后switch？
 * SELECT TABLE_NAME FROM USER_TABLES--查询当前所有表
 * 抽象工厂，连接数据库取出数据来生成大list，同时去取mssql中的库表结构，然后拿回来进行比较
 */
#endregion


#region 连接数据库测试语句
/*var connectionString = @"Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.51.108)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SID = DB11G)));User Id=szods;Password=123;Persist Security Info=True;";//
            var oriconn = @"Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.51.108)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SID = DB11G)));User Id=szods;Password=123;";//Persist Security Info=True;

                        var oriconn = @"Data Source=(DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.51.108)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SERVER = DEDICATED)
                  (SID = DB11G)
            
                )
              );User Id=szods;Password=123;Persist Security Info=True;
            ";
            string sqlcon = @"Data Source=TestDB;Persist Security Info=True;User ID=tanyixiu;Password=pwd;Unicode=True";*/
#endregion